#pragma once

#include "..\\..\\Common\\DSExceptions.h"

template <typename T, typename Comp = std::less<T>>
class BinarySearchTree {
private :
	typedef struct _TreeNode {
		_TreeNode* pParent;
		_TreeNode* pLeft;
		_TreeNode* pRight;
		T key;
		_TreeNode(const T& init = T()) : key(init) {}
	}TreeNode;

	Comp m_fComp;
	TreeNode* m_pRootNode;

public :
	BinarySearchTree();
	~BinarySearchTree();
};

template <typename T, typename Comp = std::less<T>>
BinarySearchTree<T, Comp>::BinarySearchTree() {
	m_pRootNode = NULL;
	
}

template <typename T, typename Comp = std::less<T>>
BinarySearchTree<T, Comp>::~BinarySearchTree() {
}